%%%%%%%%%%%%##%###********++++*+===#%#%%@@%%%%%%%%%####%%%%%%%%%%%%%%
%%%%%%%%%@@@@%#*********++++++*+====+##*@%%%#%%##%#**#####%%%%%%%%%%%
#%%%%%%%%%%%###******++++++**++=======*#@@%%%##*+***#%%%%%####%%%%%%%
#**#####***+++%****++++++*++==========**%%#***%##*+####%%%%%%%###%%%%
*#****=+####%%#*++++*++====-----====+#%#%%##*+%%##########%%%%%%%###%
***#%#*++%@@@@#+++===--------=+*#####******#%#%%####%%###%%%%%%@@@%%%
##*%%###**%#*#=------------==+++*%%%#***+++**#%%%##%##%%###%%%%%@@@@@
#%*****+#%*+++=--========+++**###%%%%####****###%#*#####%%#%%%%%%%%%%
+***#*+##+========+++++*+**##########%%%%%##%####**#####%%%%%%%#*###%
#####%####====++++++*#***********####%%%%%%###%###*####%%%%%%####%%@@
*#%%#%#*#*++++++*#***************###%%%%%%#%#%%%###+**%#####**#%%@@@@
*+####+=++++****#####********+++*###%%%%%%##%+#%%#*###########%@@@@%%
+++++++++++***+++*+**********++**#*##########%%%%%######*+=+++%@@@@%%
+=====++*************######*******##*##%%%%%%%%%%%%%%%%%%##*+==+#%%%%
====+***###******######%############*########%%%%%%%%%%%%%%##*+===+*#
==+*##############%%%%%%##%%%%%%%%%%%%%################%%%###***+===+
*############%%%%%%%%%%%%###%%%%##%%%%%%%%%%%%%%%############**##+==+
%%%#######%%%%%%%%%%%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%####*********#****
%####%%%%%%%%%%%%%%%%%%%%%####%%%###################***#**********###
##%%%%%%%%%%%%%%%#%########################*######**********#***+++=+
%%%%%%%%#####################################**######******++=======+
%%############################################****##**++============+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##*****************#